package com.sc.mapper;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

/**
 * 
 * @Description TODO
 * @author pengjun
 * @version v1.0
 * @date 2020年7月9日
 * LongWritable： hadoop中序列化类	Text：hadoop中序列化类
 * 第一个参数：mapreduce读取到一行文本的起始偏移量（行号）
 * 第二个参数：读取到一行文本的内容
 * 第三个参数：完成map逻辑输出的文本统计Key-单词
 * 第四个参数：完成map逻辑输出的文本统计Value-单词数量
 */
public class WordCountMapper extends Mapper<LongWritable, Text, Text, LongWritable> {

	/*
	 * @@Description 该方法会被无限次调用（读取完一行，再调用读下一行）
	 */
	@Override
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)
			throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		String line = value.toString();
		line = line.replace(",", " ").replaceAll("[.?\'\"-]", "");
		String[] words = line.split(" ");
		
		for (String word : words) {
			//将单词输出为Key，次数输出为Value，该行读取完输出到Reducer中
			context.write(new Text(word), new LongWritable(1));
		}
	}
}
